Jochen Zeirzer

Coin

In the same extent as man automates its environment and procedures by machinery, man becomes automated by his machines. The initial point of the work Coin is the malfunction of a machine. Caught in a monotonous loop, provoked by this error, a person either becomes a „stupid machine“ itself, or gives up and flees the situation. The machine Coin does not give up. Again and again it throws a coin into a coin slot. Over and over again this coin falls through. Until this machine is malfunctioning too.



Coin01.jpg

Coin02.jpg

Photography: Image Recorder


Technical description
 

Coin, coin slot, aluminium plates, steel plate, Firgelli Linear Actuator, servo motor, solenoids, Arduino Uno, custom electronics
 

Coin03.jpg

Coin04.jpg

Arduino - Code

/* Created by Jochen Zeirzer http://www.jochen_zeirzer.public2.linz.at/ project: coin year: 2013
The Morse Code part in this sketch is based on a project by Geoff Parsons alias skhisma https://github.com/skhisma/arduino-morse-code/blob/master/arduino-morse-code.pde */
#include <VarSpeedServo.h>
VarSpeedServo ServoLift; // Servo to Lift the Coin VarSpeedServo ServoLin; // Firgelli L12P Linear actuator
int TransMag1 = 10; // Transistor to switch Magnet 1 = Magnet pull on digital PIN 10 int TransMag2 = 11; // Transistor to switch Magnet 2 = Magnet push on digital PIN 11 int IRsend = 12; // IR-LED to detect coin on digital PIN 12 int IRreceive = A0; // IR-Transitor to detect coin on analog PIN 0 const int threshold = 50; // Threshold level analog input (IR light barrier)
int beep = 13; // Piezo Speaker on digital PIN 13 int length = 50; // Morse Code Unit length in milliseconds
char* lookup[] = { // International Morse Code Characters (ITU) ".-", //a "-...", //b "-.-.", //c "-..", //d ".", //e "..-.", //f "--.", //g "....", //h "..", //i ".---", //j "-.-", //k ".-..", //l "--", //m "-.", //n "---", //o ".--.", //p "--.-", //q ".-.", //r "...", //s "-", //t "..-", //u "...-", //v ".--", //w "-..-", //x "-.--", //y "--..", //z };
void setup() {
Serial.begin(9600);
// 1kHz PWM on pin3 for Linar Actuator Firgelli L12P // configure hardware timer2 to generate a fast PWM on OCR2B (Arduino digital pin 3) // set pin high on overflow, clear on compare match with OCR2B TCCR2A = 0x23; TCCR2B = 0x0C; // select timer2 clock as 16 MHz I/O clock / 64 = 250 kHz OCR2A = 249; // top/overflow value is 249 => produces a 1000 Hz PWM pinMode(3, OUTPUT); // enable the PWM output (you now have a PWM signal on digital pin 3) OCR2B = 125; // set the PWM to 50% duty cycle
// Transistors pinMode(TransMag1, OUTPUT); pinMode(TransMag2, OUTPUT);
// IR - light barrier pinMode(IRsend, OUTPUT); pinMode(IRreceive, INPUT);
// Piezo Speaker pinMode(beep, OUTPUT);
// Servos ServoLift.attach(6); // Servo to Lift the coin on digital pwm pin 6 ServoLift.write(44); ServoLin.attach(3); // Linear actuator on modified digital pwm pin 3 ServoLin.writeMicroseconds(2000); delay(3000); ServoLift.slowmove(124, 20); delay(2000); ServoLin.writeMicroseconds(1800); delay(500); }
// Morse Code void dash() { digitalWrite(beep, HIGH); delay(length*3); digitalWrite(beep, LOW); }
void dot() { digitalWrite(beep, HIGH); delay(length); digitalWrite(beep, LOW); }
void intra_char_gap() { delay(length); }
void char_gap() { delay(length*3); }
void word_gap() { delay(length); }
void blink_char(char c) { if(c == '-') dash(); else dot(); intra_char_gap(); }
void blink(char str[]) { int c; int ic; for(c=0; c<strlen(str); c++) { if(str[c] == ' ') word_gap(); else { int idx = (int)toupper(str[c]) - 65; char* chr = lookup[idx]; for(ic=0; ic<strlen(chr); ic++) { blink_char(chr[ic]); } char_gap(); } } }
void loop() {
delay(2000); digitalWrite(IRsend, HIGH); // read the value of the Infrared LED: int analogValue = analogRead(IRreceive); Serial.println(analogRead(IRreceive));
// if the analog value is below treshold, coin is in slot - start sequence: if (analogValue < threshold) { digitalWrite(IRsend, LOW); ServoLin.writeMicroseconds(1900); delay(1000); ServoLin.writeMicroseconds(1020); ServoLift.slowmove(46, 20); delay(2000); digitalWrite(11, HIGH); // set the Transistor for Magnet2 on delay(80); digitalWrite(10, HIGH); // set the Transistor for Magnet1 on delay(200); ServoLift.slowmove(54, 10); delay(300); ServoLin.writeMicroseconds(1900); delay(1000); ServoLift.slowmove(124, 20); delay(1000); ServoLin.writeMicroseconds(1700); delay(620); digitalWrite(11, LOW); // set the Transistor for Magnet2 off digitalWrite(10, LOW); // set the Transistor for Magnet1 off }
// if the analog value is above treshold, coin is missing - morse "help please" else { blink("help please"); }
}

 

The machine Coin is part of my final projekt TRIVIAL MOTION at the Art University Linz, Department for Experimental Arts.

The diploma TRIVIAL MOTION is available in german only.